﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace _201206QuanLyBanHang.ChucNang
{
    public partial class DmSanPham : Form
    {
        //khai bao bien
        private string masp;
        private string tensp;
        private double giasp;
        private DateTime ngaygia;
        private string ghichu;
        bool flat = false;
        private int sodong;

        //khai bao ket noi
        private string sqlStr = "select masp,tensp,giasp,ngaygiasp,ghichu_sp from sanpham order by masp,tensp,giasp,ngaygiasp,ghichu_sp";
        private BLL_SanPham db = new BLL_SanPham();
        private DataSet ds = new DataSet();

        public DmSanPham()
        {
            InitializeComponent();
            DataBind(sqlStr);
        }
        public void DataBind(string sql)
        {
            ds = db.getDMSanPham(sql);
            dgdssanpham.DataSource = ds.Tables[0];
            dgdssanpham.Columns[0].HeaderText = "Mã số";
            dgdssanpham.Columns[1].HeaderText = "Tên sản phẩm";
            dgdssanpham.Columns[2].HeaderText = "Giá sản phẩm";
            dgdssanpham.Columns[3].HeaderText = "Ngày tháng";
            dgdssanpham.Columns[4].HeaderText = "Ghi chú";
            dgdssanpham.AllowUserToAddRows = false;


            dgdssanpham.Columns[2].DefaultCellStyle.Format = "#,###";
            dgdssanpham.Columns[3].DefaultCellStyle.Format = "dd/MM/yyyy";

            //setdoituong();
            this.dgdssanpham.AutoResizeColumns(
              DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            this.dgdssanpham.ReadOnly = false;
            dgdssanpham.AllowUserToAddRows = false;
            sodong = 0;
            sodong = ds.Tables[0].Rows.Count;
            this.grsanpham.Text = "Số lượng sản phẩm: ";
            this.grsanpham.Text = this.grsanpham.Text + sodong;
        }
        /// <summary>
        /// hàm lưu thông tin đầu tư
        /// </summary>
        private void luu()
        {
            try
            {
                //setdoituong(false, true);
                masp = this.txtma.Text;
                tensp = this.txtten.Text;
                giasp = double.Parse(this.txtgia.Text);
                //sap xep lai ngay thang
                ngaygia = Convert.ToDateTime(this.datengaysanpham.Value.ToShortDateString());
                //----
                ghichu = this.txtghichu.Text;

                string err = "";
                if (!db.insertDMSanPham(ref err, masp, tensp, giasp, ngaygia, ghichu))
                {
                    MessageBox.Show(err.ToString());
                }
                DataBind(sqlStr);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            

        }
        /// <summary>
        /// hàm sửa thông tin loại khách hàng
        /// </summary>
        private void DMSua()
        {
            string err = "Không thể sửa thông tin";
            masp = this.txtma.Text;
            tensp = this.txtten.Text;
            giasp = double.Parse(this.txtgia.Text);
            //sap xep lai ngay thang
            ngaygia = Convert.ToDateTime(this.datengaysanpham.Value.ToShortDateString());
            //----
            ghichu = this.txtghichu.Text;

            if (!db.updateDMDautu(ref err,masp,tensp,giasp,ngaygia,ghichu))
            {
                MessageBox.Show(err.ToString());
            }
            DataBind(sqlStr);
        }
        /// <summary>
        /// xóa thông tin đầu tư
        /// </summary>
        private void DMXoa()
        {
            try
            {
                masp = this.txtma.Text;
            }
            catch
            {
                MessageBox.Show("Chọn khu vực để xóa");
                return;
            }
            DialogResult result;
            result = MessageBox.Show("Bạn có muốn xóa không", "Xóa dữ liệu trong danh mục khu vực", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                string err = "Dữ liệu không thể xóa";
                if (!db.deleteDMSanPham(ref err,masp))
                    MessageBox.Show(err);
                else
                    MessageBox.Show("Đã xóa thành công");
            }
            DataBind(sqlStr);
        }
        //các hàm tiện ích khác

        /// <summary>
        /// hàm lấy dữ liệu vào trong textbox
        /// </summary>
        private void bin()
        {

            this.txtma.Text = dgdssanpham[dgdssanpham.Columns[0].Index, dgdssanpham.CurrentRow.Index].Value.ToString();
            this.txtten.Text = dgdssanpham[dgdssanpham.Columns[1].Index, dgdssanpham.CurrentRow.Index].Value.ToString();
            this.txtgia.Text = dgdssanpham[dgdssanpham.Columns[2].Index, dgdssanpham.CurrentRow.Index].Value.ToString();
            this.datengaysanpham.Text = dgdssanpham[dgdssanpham.Columns[3].Index, dgdssanpham.CurrentRow.Index].Value.ToString();
            this.txtghichu.Text = dgdssanpham[dgdssanpham.Columns[4].Index, dgdssanpham.CurrentRow.Index].Value.ToString();
            flat = true;
        }
        /// <summary>
        /// hàm lấy stt de làm mã tự động
        /// </summary>
        /// <returns></returns>
        public int laystt()
        {
            int stt = 1;
            string sqlstring = "select max(masp) from sanpham";
            string err = "";
            object kq = db.layma(ref err, sqlstring);
            if (kq != System.DBNull.Value)
                stt = Convert.ToInt32(kq) + 1;
            return stt;
        }

        private void BtnThem_Click(object sender, EventArgs e)
        {
            flat = false;
            this.txtma.Text = laystt().ToString();
            this.txtten.Focus();
            this.txtten.Text = "";
            this.txtgia.Text = "";
            this.datengaysanpham.Text = "";
            this.txtghichu.Text = "";

            //set lai trang thai nut
            this.Btnluu.Enabled = true;
            this.BtnXoa.Enabled = true;
        }

        private void Btnluu_Click(object sender, EventArgs e)
        {
            if (flat)
                DMSua();
            else
                luu();
            //set doi tuong
            this.txtten.Focus();
            this.txtten.Text = "";
            this.txtgia.Text = "";
            this.datengaysanpham.Text = "";
            this.txtghichu.Text = "";
        }

        private void BtnXoa_Click(object sender, EventArgs e)
        {
            DMXoa();
            this.txtten.Focus();
            this.txtten.Text = "";
            this.txtgia.Text = "";
            this.datengaysanpham.Text = "";
            this.txtghichu.Text = "";
        }

        private void dgdssanpham_Click(object sender, EventArgs e)
        {
            try
            {
                this.dgdssanpham.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                this.dgdssanpham.BeginEdit(false);
                this.dgdssanpham.CurrentRow.Selected = true;
                this.bin();
                this.Btnluu.Enabled = true;
                this.BtnXoa.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public string ToTitleCase(string str)
        {
            str = str.ToLower();
            char[] charArr = str.ToCharArray();
            charArr[0] = char.ToUpper(charArr[0]);
            foreach (Match m in Regex.Matches(str, @"\s\S"))
            {
                charArr[m.Index + 1] = m.Value.ToUpper().Trim()[0];
            }
            return new string(charArr);
        }

        private void txtten_Leave(object sender, EventArgs e)
        {
            if (this.txtten.Text != "")
            {
                string t = txtten.Text;
                txtten.Text = ToTitleCase(t);
            }
        }

        private void DmSanPham_Load(object sender, EventArgs e)
        {

        }

        private void button_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
